#ifndef _ICAR_END_PARAM_H
#define _ICAR_END_PARAM_H

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>

#define MAX_PARAM_LIST		0x100

#define PARM_IS_WORD		0x02
#define PARM_IS_DWORD		0x04
#define PARM_IS_STRING		0x01


#define PARM_END_HEARTBEAT_INTERVAL		0x0001	/* 终端心跳发送间隔 */
#define PARM_TCP_RESPONSE_TIMEOUT		0x0002	/* TCP 消息应答超时时间 */
#define PARM_TCP_RETRANS_CNT			0x0003	/* TCP 消息重传次数 */
#define PARM_UDP_RESPONSE_TIMEOUT		0x0004	/* UDP 消息应答超时时间 */
#define PARM_UDP_RETRANS_CNT			0x0005	/* UDP 消息重传次数 */
#define PARM_SMS_RESPONSE_TIMEOUT		0x0006	/* SMS 消息应答超时时间 */
#define PARM_SMS_RETRANS_CNT			0x0007  /* SMS 消息重传次数 */

#define PARM_APN_ACCESS_POINT			0x0010	/* 主服务器APN，无线通信拨号访问点 */
#define PARM_APN_USERNAME				0x0011	/* 主服务器无线通信拨号用户名 */
#define PARM_APN_PASSWORD				0x0012	/* 主服务器无线通信拨号密码 */
#define PARM_APN_ADDRESS				0x0013	/* 主服务器地地，IP或域名 */
#define PARM_APN_BACKUP_POINT			0x0014	/* 备份服务器ALPN，无线通信拨号访问点 */
#define PARM_APN_BACKUP_USERNAME		0x0015	/* 备份服务器无线通信拨号用户名 */
#define PARM_APN_BACKUP_PASSWORD		0x0016	/* 备份服务器无线通信拨号密码 */
#define PARM_APN_BACKUP_ADDRESS			0x0017	/* 备份服务器地址，IP或域名 */
#define PARM_APN_TCP_PORT				0x0018	/* 服务器TCP 端口 */
#define PARM_APN_UDP_PORT				0x0019	/* 服务器UDP 端口 */
#define PARM_IC_SERVER_ADDRESS			0x001A	/* 道路运输证IC卡认证服务器IP地址或域名 */
#define PARM_IC_SERVER_TCP_PORT			0x001B	/* 道路运输证IC卡认证服务器TCP 端口 */
#define PARM_IC_SERVER_UDP_PORT			0x001C	/* 道路运输证IC卡认证服务器UDP 端口 */
#define PARM_IC_BACKUP_ADDRESS			0x001D	/* 道路运输证IC卡认证备份服务器 IP地址或域名 */

#define PARM_POSITION_REPORT_STRATE		0x0020	/* 位置汇报策略：0:定时汇报，1:定距汇报，2:定时和定距汇报 */
#define PARM_POSITION_REPORT_SCHEME		0x0021	/* 位置汇报方案：0:根据ACC状态；1:根据登录状态和ACC，先判断登录状态，若登录再根据ACC */
#define PARM_DRIVER_NOLOGIN_INTERVAL	0x0022	/* 驾驶员未登录汇报时间间隔 */
#define PARM_SLEEP_REPORT_INTERVAL		0x0027	/* 休眠时汇报时间间隔 */
#define PARM_ALARM_REPORT_INTERVAL		0x0028	/* 紧急报警时汇报时间间隔 */
#define PARM_DEFAULT_REPORT_INTERVAL	0x0029	/* 缺省时间汇报间隔 */
#define PARM_DEFAULT_REPORT_RANGE		0x002C	/* 缺省距离汇报间隔 */
#define PARM_DRIVER_NOLOGIN_RANGE		0x002D	/* 驾驶员未登录汇报距离间隔 */
#define PARM_SLEEP_REPORT_RANGE			0x002E	/* 休眠时汇报距离间隔 */
#define PARM_ALARM_REPORT_RANGE			0x002F	/* 紧急报警时汇报距离间隔 */


#define PARM_INFLEX_SUPPLEMENT_ANGLE	0x0030	/* 拐点补传角度 */
#define PARM_ELECTRON_RAIL_RADIUS		0x0031	/* 电子围栏半径 */



#define PARM_MONITOR_CONTROL_NUMBER		0x0040	/* 监控平台电话号码 */
#define PARM_RESET_PHONE_NUMBER			0x0041	/* 复位电话号码，可采用此号码让终端复位 */
#define PARM_RESTORE_PHONE_NUMBER		0x0042	/* 恢复出厂设置号码 */
#define PARM_MONITOR_SMS_NUMBER			0x0043	/* 监控平台SMS号码 */
#define PARM_RECV_SMS_TEXT_NUMBER		0x0044	/* 接收终端SMS文本报警号码 */
#define PARM_END_ANSWER_STRATE			0x0045 	/* 终端电话接听策略，0:自动接听；1:ACC ON自动接听，OFF手动接听 */
#define PARM_EACH_TALK_LONGEST_TIME		0x0046	/* 每次最长通话时间，0为不允许通话，0xFFFFFFFF为不限制 */
#define PARM_MONTH_TALK_LONGEST_TIME	0x0047	/* 每月最长通话时间，0为不允许通话，0xFFFFFFFF为不限制 */ 
#define PARM_MONITOR_PHONE_NUMBER		0x0048	/* 监听电话号码 */
#define PARM_MONITOR_PRIVILEGE_NUMBER	0x0049	/* 监管平台特权短信号码 */


#define PARM_ALARM_MASK_WORD			0x0050	/* 报警屏蔽字 */
#define PARM_ALARM_TEXT_SMS_SWITCH		0x0051	/* 报警发送文本SMS形状 */
#define PARM_ALARM_SHOOT_SWITCH			0x0052	/* 报警拍摄形状 */
#define PARM_ALARM_SHOOT_STORE_FLAG		0x0053	/* 报警拍摄存储标志 */
#define PARM_KEY_FLAG					0x0054	/* 关键标志 */
#define PARM_HIGNEST_SPEED				0x0055	/* 最高速度 */
#define PARM_OVER_SPEED_TIME			0x0056	/* 超速持续时间 */
#define PARM_CONTINUOUS_DRIVE_TIME		0x0057	/* 连续驾驶时间门限 */
#define PARM_DAILY_DRIVER_TIME_LIMIT	0x0058	/* 当天累计驾驶时间门限 */
#define PARM_MINIMUM_SLEEP_TIME			0x0059	/* 最小休息时间 */
#define PARM_LONGEST_PARK_TIME			0x005A	/* 最长停车时间 */
#define PARM_OVER_SPEED_WARN_DVALUE		0x005B	/* 超速报警预警差值单位 */
#define PARM_FATIGUE_DRIVE_DVALUE		0x005C	/* 疲劳驾驶预警差值 */
#define PARM_CRASH_ALARM_PARM			0x005D	/* 碰撞报警参数设置 */
#define PARM_ROLLOVER_ALARM_PARM		0x005E	/* 侧翻报警参数设置 */


#define PARM_TIMER_SHOOT_CONTROL		0x0064	/* 定时拍照控制 */
#define PARM_RANGE_SHOOT_CONTROL		0x0065	/* 定距拍照控制 */

#define PARM_PIC_VIDEO_QUALITY			0x0070	/* 图像／视频质量 1-10 ，1最好 */
#define PARM_BRIGHTNESS					0x0071	/* 亮度 */
#define PARM_CONTRAST					0x0072	/* 对比度 */
#define PARM_SATURATION					0x0073	/* 饱和度 */
#define PARM_CHROMA						0x0074	/* 色度 */

#define PARM_VEHICLE_ODOGRAPH			0x0080	/* 车辆里程表计数 */
#define PARM_VEHICLE_PROVINCE			0x0081	/* 车辆所在的省域ID */
#define PARM_VEHICLE_CITY				0x0082	/* 车辆所在的市域ID */
#define PARM_MOTOR_VEHICLE_LICENSE		0x0083	/* 公安交通管理部门颁发的机动车号牌 */
#define PARM_VEHICLE_LICENSE_COLOR		0x0084	/* 车牌颜色 */


#define PARM_GNSS_POSITION_MODE			0x0090	/* GNSS 定位模式 */
#define PARM_GNSS_BAUDRATE				0x0091	/* GNSS波特率：0x00: 4800; 0x01: 9600: 0x02: 19200; 0x03: 38400; 0x04: 57600; 0x05: 115200 */
#define PARM_GNSS_POS_OUTPUT_FREQUENCE	0x0092	/* GNSS 模块详细定位数据输出频率 0x00: 500ms; 0x01: 1000ms; 0x02: 2000ms; 0x03: 3000ms; 0x04: 4000ms */
#define PARM_GNSS_POS_SAMPLE_FREQUENCE	0x0093	/* GNSS 模块详细定位数据采集频率 默认为1 */
#define PARM_GNSS_POS_UPLOAD_MODE		0x0094	/* 模块详细定位数据上传方式 */
/* 
   0x00, 本地存储，不上传（默认值）；
   0x01，按时间间隔上传；
   0x02，按距离间隔上传；
   0x0B, 按累计时间上传，达到传输时间后自动停止上传；
   0x0C, 按累计距离上传，达到距离后自动停止上传；
   0x0D，按累计条数上传，达到上传条数后自动停止上传；
 */

#define PARM_GNSS_POS_UPLOAD_SETUP		0x0095	/* GNSS 模块详细定位数据上传设置 */
/*
   0x01, 单位为秒；
   0x02，单位为米；
   0x0B，单位为秒；
   0x0C，单位为米；
   0x0D，单位为条
 */

#define PARM_CAN_ONE_SAMPLE_INTERVAL	0x0100 	/* CAN总线1 采集时间间隔, 0 表示不采集 */
#define PARM_CAN_ONE_UPLOAD_INTERVAL	0x0101 	/* CAN总线1 上传时间间隔，0 表示不上传  */
#define PARM_CAN_TWO_SAMPLE_INTERVAL	0x0102	/* CAN总线2 采集时间间隔，0表示不采集 */
#define PARM_CAN_TWO_UPLOAD_INTERVAL	0x0103 	/* CAN总线2 上传时间间隔，0 表示不上传  */

#define PARM_CAN_ID_SEPERATE_SAM_SETUP	0x0110	/* CAN总线ID单独采集设置 */
/*
   bit63-bit32 表示此ID采集时间间隔（ms），0表示不采集；
   bit31 表示CAN通道号，0: CAN1，1: CAN2;
   bit30 表示帧类型，0: 标准帧，1: 扩展帧；
   bit29 表示数据采集方式，0: 原始数据，1: 采集区间的计算值；
   bit28-bit0 表示CAN总线ID。
 */

#define CHANNEL_1_TIME_SWITCH		0x1
#define CHANNEL_2_TIME_SWITCH		0x2
#define CHANNEL_3_TIME_SWITCH		0x4
#define CHANNEL_4_TIME_SWITCH		0x8
#define CHANNEL_5_TIME_SWITCH		0x10

#define CHANNEL_1_TIME_STORE			0x100
#define CHANNEL_2_TIME_STORE			0x200
#define CHANNEL_3_TIME_STORE			0x400
#define CHANNEL_4_TIME_STORE			0x800
#define CHANNEL_5_TIME_STORE			0x1000

#define TIMER_UNIT				0x10000	/* 定时时间单位 0: 秒，当数值小于5秒时，终端按5秒处理； 1: 分。*/


#define CHANNEL_1_RANGE_SWITCH		0x1
#define CHANNEL_2_RANGE_SWITCH		0x2
#define CHANNEL_3_RANGE_SWITCH		0x4
#define CHANNEL_4_RANGE_SWITCH		0x8
#define CHANNEL_5_RANGE_SWITCH		0x10

#define CHANNEL_1_RANGE_STORE			0x100
#define CHANNEL_2_RANGE_STORE			0x200
#define CHANNEL_3_RANGE_STORE			0x400
#define CHANNEL_4_RANGE_STORE			0x800
#define CHANNEL_5_RANGE_STORE			0x1000

#define RANGE_UNIT				0x10000	/* 定时时间单位 0: 秒，当数值小于5秒时，终端按5秒处理； 1: 分。*/

/* 终端参数项格式 */
struct param_struct {
	uint32_t id;			/* 参数ID */
	int		len;				/* 参数长度 */
	union {
		uint32_t l;			/* DWORD 类型 */
		uint16_t s;			/* WORD 类型 */
		uint8_t b;			/* BYTE 类型 */
		unsigned char	c[256];	/* STRING 或 BYTE[8] 类型 */
	} value;
};

/* 设置终端参数 */
struct param_list {
	int lsize;		/* 参数总数 */
	struct param_struct list[0];	/* 参数项列表 */
};

#ifdef __cplusplus
}
#endif

#endif
